`timescale 1ns/10ps
`define clock_period 20

module d_flip_flop_tb;
	
	reg clk_50m;
	reg rst_n;
	reg d;
	
	wire q;
	
	d_flip_flop df0(
		.Clk_50M(clk_50m),
		.Rst_n(rst_n),
		.D(d),
		.Q(q)
	);
	
	//时钟生成
	always #(`clock_period / 2) clk_50m = ~clk_50m;
	
	//测试过程
	initial begin
		//初始化信号
		rst_n = 1'b0;
		d = 1'b0;
		
		rst_n = 1'b0;
		#(`clock_period);
		rst_n = 1'b1;
		
		d = 1'b1;
		#(`clock_period);
		d = 1'b0;
		#(`clock_period);
		d = 1'b1;
		#(`clock_period);
		
		$stop;
	end
	
endmodule
	